/**
 * 
 * @param {*} strs 
 * @returns 
 * 
 * 
 */
function longestCommonPrefix(strs) {
  // 边界情况处理：如果数组为空，则返回空字符串
  if (strs.length === 0) {
    return "";
  }

  // 假设第一个字符串为最长公共前缀的初始值
  let prefix = strs[0];

  // 遍历数组中的每个字符串
  for (let i = 1; i < strs.length; i++) {
    // 当发现当前字符串与prefix没有公共前缀时，更新prefix
    // 更新逻辑为：逐字符比较，直到找到不同的字符或任一字符串结束
    while (strs[i].indexOf(prefix) !== 0) {
      // 去除prefix的最后一个字符，继续比较
      prefix = prefix.substring(0, prefix.length - 1);
      console.log(prefix)
      // 如果prefix变为空字符串，则无需继续比较，直接返回
      if (prefix === "") {
        return "";
      }
    }
  }

  // 循环结束，返回找到的最长公共前缀
  return prefix;
}

// 测试
console.log(longestCommonPrefix(["flower", "flow", "flight"])); // 输出 "fl"
console.log(longestCommonPrefix(["dog", "racecar", "car"])); // 输出 ""
console.log(longestCommonPrefix([""])); // 输出 ""
console.log(longestCommonPrefix(["abc", "abc"])); // 输出 "abc"
